The programming of large scale application programs for any computer machine is a time-consuming task. The programming of large scale application programs for parallel (concurrent) processors is especially difficult because the underlying parallelism forces algorithms and architectures to not only interact but also create new phenomena. There have been a number of program generation systems which have been designed and/or implemented to solve one or more facets of the parallel programming problem. Some of these systems address the algorithm mapping problem while others concern themselves primarily with the language issues in expressing an arbitrary parallel program, possibly in a restricted domain. Some other efforts have introduced primitives which help in synchronizing communication between two parallel programs.
Notwithstanding these efforts, the generation of parallel programs for use in parallel processor systems remains a roadblock to the effective realization of the potential of parallel processing.